/**
 * @Author Stringzhua
 * @Date 2024/11/30 13:49
 * description:
 */
public class demo03 {
    public static void main(String[] args) {
        //这里有两个数组,需要你求并集并去重
        int[] a = {1, 2, 3, 4, 5, 6};
        int[] b = {4, 5, 6, 7, 8, 9, 10, 11};
        //不能使用集合或者其他的系统函数,使用数组实现
        int[] result = unionArray(a, b);
        for (int num : result) {
            System.out.print(num + " ");
        }
    }

    /**
     * 求两个数组的并集并去重，并排序
     *
     * @param a 第一个数组
     * @param b 第二个数组
     * @return 去重并排序后的并集数组
     */
    public static int[] unionArray(int[] a, int[] b) {
        // 判空处理
        if (a == null) {
            a = new int[0];
        }
        if (b == null) {
            b = new int[0];
        }

        // 合并两个数组
        int[] combined = new int[a.length + b.length];
//        System.arraycopy(a, 0, combined, 0, a.length);
//        System.arraycopy(b, 0, combined, a.length, b.length);
        for (int i = 0; i < a.length; i++) {
            combined[i] = a[i];
        }
        for (int i = 0; i < b.length; i++) {
            combined[a.length + i] = b[i];
        }

        // 去重
        int uniqueCount = 0;
        for (int i = 0; i < combined.length; i++) {
            boolean isDuplicate = false;
            for (int j = 0; j < uniqueCount; j++) {
                if (combined[i] == combined[j]) {
                    isDuplicate = true;
                    break;
                }
            }
            if (!isDuplicate) {
                combined[uniqueCount++] = combined[i];
            }
        }

        // 截取去重后的数组
        int[] uniqueArray = new int[uniqueCount];
        System.arraycopy(combined, 0, uniqueArray, 0, uniqueCount);

        // 排序（使用冒泡排序）
        for (int i = 0; i < uniqueArray.length - 1; i++) {
            for (int j = 0; j < uniqueArray.length - 1 - i; j++) {
                if (uniqueArray[j] > uniqueArray[j + 1]) {
                    int temp = uniqueArray[j];
                    uniqueArray[j] = uniqueArray[j + 1];
                    uniqueArray[j + 1] = temp;
                }
            }
        }
        return uniqueArray;
    }

}
